package config

import (
	"context"
	"fmt"
	"time"

	"github.com/redis/go-redis/v9"
)

var ctx = context.Background()
var rdb *redis.Client

func init() {

	rdb = redis.NewClient(&redis.Options{
		Addr:     "localhost:6379", // Redis 服务器地址
		Password: "",               // 没有密码则留空
		DB:       0,                // 使用默认数据库
		// PoolSize:        10000,
		// MinIdleConns:    100,
		// ConnMaxIdleTime: 60 * time.Second,
	})

	// 测试连接
	pong, err := rdb.Ping(ctx).Result()
	if err != nil {
		fmt.Println("无法连接到 Redis:", err)
		return
	}
	fmt.Println("连接成功:", pong)

}

// 设置
func SetKey(key, value string, ex int64) error {
	err := rdb.Set(ctx, key, value, time.Duration(ex)*time.Second).Err()
	if err != nil {
		fmt.Println("设置键失败:", err)
		return err
	}
	return nil
}

// 获取
func GetKey(key string) (string, error) {
	val, err := rdb.Get(ctx, key).Result()
	if err == redis.Nil {
		// fmt.Println("键不存在:", key)
		return "", nil
	} else if err != nil {
		// fmt.Println("获取键失败:", err)
		return "", err
	}
	return val, nil
}

// 删除
func DelKey(key string) error {
	err := rdb.Del(ctx, key).Err()
	if err != nil {
		//fmt.Println("删除失败:", err)
		return err
	}
	return nil
}